import numpy as np
import matplotlib.pyplot as plt
# todo 折线图
'''
使用 Numpy的函数 np.arange() 函数创建 x 轴上的值。将 y 轴上的对应值存储在另一个数组对象 y 中。 这些值使用 matplotlib 软件包的 pyplot 子模块的 plot() 函数绘制。
字符	颜色
‘b’	蓝色
‘g’	绿色
‘r’	红色
‘c’	青/绿色
‘m’	品红色
‘y’	黄色
‘k’	黑色
‘w’	白色
‘o’	橙色
'''
# 绘制 x 轴数据
# x = np.arange(2,15)
# y = 3 * x+6
#
# # 给图形设置标题
# plt.title('line chart')
# # 设置 x 轴和 y 轴的属性名
# plt.xlabel("x axis")
# plt.ylabel("y axis")
# # 绘制图形
# plt.plot(x,y)
# # 显示图形
# plt.show()

# todo 散点图
# x = np.arange(2, 15)
# y = 2 * x + 6
# plt.title("scatter chart")
# plt.xlabel("x axis")
# plt.ylabel("y axis")
#
# # 设置图形样式和颜色
# # plt.plot(x, y, "sc")
# # 三角形
# plt.plot(x, y, "^c")
# plt.show()

# todo 正余弦波形图
# 计算正弦曲线上点的 x 和 y 坐标
# print(np.pi)
# # 绘制 x 轴，从 0 开始，
# x = np.arange(0, 3 * np.pi,  0.1)
# y = np.sin(x)
# # 设置标题
# plt.title("sine wave form")
# # 绘制图形点
# plt.plot(x, y, 'y')
# plt.show()

# 计算正弦曲线上点的 x 和 y 坐标
# print(np.pi)
# # 绘制 x 轴，从 0 开始，
# x = np.arange(0, 4 * np.pi,  0.1)
# y = np.cos(x)
# # 设置标题
# plt.title("cosine wave form")
# # 绘制图形点
# plt.plot(x, y, 'm')
# plt.show()

# 正余弦同时展示

# 计算正弦和余弦曲线上的点的 x 和 y 坐标
# x = np.arange(0,  3  * np.pi,  0.1)
# y_sin = np.sin(x)
# y_cos = np.cos(x)
# # 建立 subplot 网格，高为 2，宽为 1
# # 激活第一个 subplot
# plt.subplot(2,  1,  1)
# # 绘制第一个图像
# plt.plot(x, y_sin)
# plt.title('Sine')
# # 将第二个 subplot 激活，并绘制第二个图像
# plt.subplot(2,  1,  2)
# plt.plot(x, y_cos)
# plt.title('Cosine')
# # 展示图像
# plt.show()

# todo 直方图
# 设置 x 的 x 轴和 y 轴数值
# x = [5,8,10]
# y = [12,16,6]
# # 设置 x2 的 x 轴和 y 轴数值
# x2 = [6,9,11]
# y2 = [6,15,7]
# # 使用 bar() 函数设置条形图的颜色和对齐方式
# plt.bar(x, y,color='y', align='center')
# plt.bar(x2, y2, color='c', align='center')
# # 设置标题
# plt.title('Bar chart')
# # 设置 x 轴和 y 轴的属性名
# plt.ylabel('Y axis')
# plt.xlabel('X axis')
# # 展示图形
# plt.show()

'''
NumPy 中的直方统计函图：histogram
a 是待统计数据的数组；
bins指定统计的区间个数；
range是一个长度为2的元组，表示统计范围的最小值和最大值，默认值 None，表示范围由数据的范围决定
weights为数组的每个元素指定了权值,histogram()会对区间中数组所对应的权值进行求和
density为 True 时，返回每个区间的概率密度；为 False，返回每个区间中元素的个数

numpy.histogram() 函数是数据的频率分布的图形表示。 水平尺寸相等的矩形对应于类间隔，称为 bin，变量 height 对应于频率。
numpy.histogram() 函数将输入数组和 bin 作为两个参数。 bin 数组中的连续元素用作每个 bin 的边界。
'''

# 赋值数组 a plt()函数使用：
# a = np.array([22, 87, 43, 56, 73, 55, 11, 20, 51, 5, 79, 27,100])
#
# # plt() 函数将数据变为直方图
# plt.hist(a, bins=[0,20,40,60,80,100])
# plt.title("histogram")
# # 显示图形
# plt.show()

# todo 曲线图
# n = 256
# X = np.linspace(-np.pi,np.pi,n,endpoint=True)
# Y = np.sin(2*X)
#
# plt.plot (X, Y+1, color='blue', alpha=1.00)
# plt.plot (X, Y-1, color='blue', alpha=1.00)
#
# plt.title('curve_chart1')
# plt.show()

# 升级版曲线
# n = 256
# X = np.linspace(-np.pi,np.pi,n,endpoint=True)
# Y = np.sin(2*X)
#
# plt.plot (X, Y+1, color='blue', alpha=1.00)
# plt.fill_between(X, 1, Y+1, color='blue', alpha=.25)
#
# plt.plot (X, Y-1, color='blue', alpha=1.00)
#
# # 设置线条颜色和填充颜色区域
# plt.fill_between(X, -1, Y-1, (Y-1) > -1, color='blue', alpha=.25)
# plt.fill_between(X, -1, Y-1, (Y-1) < -1, color='red',  alpha=.25)
#
# plt.title('curve_chart2')
# plt.show()

# 参考：https://www.runoob.com/numpy/numpy-matplotlib.html
# https://www.runoob.com/w3cnote/matplotlib-tutorial.html
# https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-py